package com.yc.exam.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yc.exam.entity.User;
import com.yc.exam.vo.ChangePasswordVo;
import com.yc.exam.vo.RegisterVo;
import com.yc.exam.vo.UserVo;

import java.util.List;

/**
 * 服务类
 *
 * @author 王妍
 * @since 2022-02-20
 */
public interface IUserService extends IService<User> {

  /**
   * 通过用户名获取用户信息
   *
   * @param username 用户名
   * @return 与用户名匹配的用户
   */
  User loadUserByUserName(String username);

  /**
   * 注册用户
   *
   * @param user 注册信息
   */
  User register(RegisterVo user);

  /**
   * 用户修改密码
   *
   * @param username 用户名
   * @param changePasswordVo 存放新密码、旧密码
   */
  void changePassword(String username, ChangePasswordVo changePasswordVo);

  /**
   * 加载用户列表
   *
   * @param page 分页条件
   * @param userVo user 查询信息
   * @return 用户分页信息
   */
  Page<UserVo> loadUserVoPage(Page<UserVo> page, UserVo userVo);

  /**
   * 保存相关信息
   *
   * @param userVo 用户信息
   */
  void saveInfo(UserVo userVo);

  /**
   * 删除用户相关数据
   *
   * @param userIds id 列表
   */
  void deleteAll(Long[] userIds);

  /**
   * 加载老师列表
   *
   * @return
   */
  List<User> loadTeacherList();

    Page<UserVo> loadUserVoPageByExam(Long examId, Page<UserVo> page, UserVo userVo);
}
